package com.xf.system.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xf.system.common.mapper.UserMapper;
import com.xf.system.common.model.User;
import com.xf.system.http.req.user.UserListReqDTO;
import com.xf.system.http.vo.user.UserDetailVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author xiefengf
 */
@Slf4j
@Service
public class UserService extends ServiceImpl<UserMapper, User> {

    @Resource
    private UserMapper userMapper;

    /**
     * 根据条件分页查询用户列表
     * @param reqDto 分页信息+查询条件
     * @return 用户分页集合信息
     */
    public IPage<UserDetailVO> selectUserPage(UserListReqDTO reqDto) {
        Page<UserDetailVO> page = new Page(reqDto.getPageNumber(), reqDto.getPageSize());
        return userMapper.selectUserPage(page,reqDto);
    }

    /**
     * 根据条件查询用户列表（不分页）
     * @param reqDto 查询条件
     * @return 用户集合信息
     */
    public List<UserDetailVO> selectUserList(UserListReqDTO reqDto) {
        return userMapper.selectUserList(reqDto);
    }

    /**
     * 通过用户id查询用户详情信息
     * @param id 用户主键id
     * @return 用户详情信息
     */
    public UserDetailVO selectUserByUid(Long id) {
        return userMapper.selectUserByUid(id);
    }

    /**
     * 通过用户登录名查询用户信息
     * @param userName 用户登录名
     * @return 用户详情信息
     */
    public User selectUserByUserName(String userName) {
        return userMapper.selectUserByUserName(userName);
    }

    /**
     * 通过用户手机号查询用户信息
     * @param phoneNumber 用户手机号
     * @return 用户详情信息
     */
    public User selectUserByPhone(String phoneNumber) {
        return userMapper.selectUserByPhone(phoneNumber);
    }

    /**
     * 通过用户邮箱查询用户信息
     * @param email 用户邮箱
     * @return 用户详情信息
     */
    public User selectUserByEmail(String email) {
        return userMapper.selectUserByEmail(email);
    }

}
